package cn.stylefeng.guns.sys.modular.system.service;

import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.modular.system.entity.AttendAudit;
import cn.stylefeng.guns.sys.modular.system.model.params.AttendAuditDdSupervisorParam;
import cn.stylefeng.guns.sys.modular.system.model.params.AttendAuditParam;
import cn.stylefeng.guns.sys.modular.system.model.result.AttendAuditBtyAreaAuditStatusResult;
import cn.stylefeng.guns.sys.modular.system.model.result.AttendAuditManagerSetResult;
import cn.stylefeng.guns.sys.modular.system.model.result.AttendAuditResult;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 出勤_督导审核店长表 服务类
 * </p>
 *
 * @author wjk
 * @since 2021-09-14
 */
public interface AttendAuditService extends IService<AttendAudit> {

    /**
     * 新增
     *
     * @author wjk
     * @Date 2021-09-14
     */
    void add(AttendAuditParam param);

    /**
     * 删除
     *
     * @author wjk
     * @Date 2021-09-14
     */
    void delete(AttendAuditParam param);

    /**
     * 更新
     *
     * @author wjk
     * @Date 2021-09-14
     */
    void update(AttendAuditParam param);

    /**
     * 查询单条数据，Specification模式
     *
     * @author wjk
     * @Date 2021-09-14
     */
    AttendAuditResult findBySpec(AttendAuditParam param);

    /**
     * 查询列表，Specification模式
     *
     * @author wjk
     * @Date 2021-09-14
     */
    List<AttendAuditResult> findListBySpec(AttendAuditParam param);

    /**
     * 查询分页数据，Specification模式
     *
     * @author wjk
     * @Date 2021-09-14
     */
     LayuiPageInfo findPageBySpec(AttendAuditParam param);


    /**
     * 根据店长店电话创建一条考勤审核的记录
     *
     * @author wjk
     * @Date 2021-09-17
     */
    AttendAudit addAttendAuditByDzPhone(String account,String attendMonth);

    /**
     *（店长考勤修改页面）店长提交审核，先验证手机号，在验证aaId，在验证旗下有没有数据所有都符合要求
     * @param account
     * @param aaId
     * @return
     */
    Map<String,String> managerSubmitAuditByPhoneAndIdValidation(String account, String aaId);

    /**
     * （店长考勤修改页面）店长提交该审核信息
     *
     *
     * @author wjk
     * @Date 2021-09-17
     */
    boolean managerSubmitAuditByPhoneAndId(String account, String aaId);

    /**
     * （督导审核页面）督导审核，通过；
     * @author wjk
     * @Date 2021-09-18
     */
    boolean setAttendAuditApproveByEmployeeList(List<AttendAuditManagerSetResult> param,String account);

    /**
     * （督导审核页面）督导审核，驳回；
     * @author wjk
     * @Date 2021-09-18
     */
    boolean setAttendAuditBackByEmployeeList(List<AttendAuditManagerSetResult> param, String account);

    /**
     * 根据店长店电话返回一条考勤审核的记录
     *
     * @author wjk
     * @Date 2021-09-22
     */
    AttendAudit getAttendAuditByDzPhone(String account);

    /**
     * 根据督导的手机号，和提交月份或者考勤月份，获得该月的考勤提交门店统计
     *
     * @author wjk
     * @Date 2021-09-23
     */
    Map<String,String> getStatusCountByDd(AttendAuditDdSupervisorParam param);

    /**
     * 根据大店长的手机号，和提交月份或者考勤月份，获得该月的考勤提交门店统计
     *
     * @author wjk
     * @Date 2021-10-19
     */
    Map<String,String> getStatusCountByDdz(AttendAuditDdSupervisorParam param);

    /**
     * （督导审核界面）返回服务器当前应该审核的考勤月份和应该提交的月份
     * @author wjk
     * @Date 2021-09-29
     */
    Map<String,String> getAttendMonth();
    /**
     * （店长创建考勤页面）创建考勤界面，返回是否允许创建考勤信息
     * @author wjk
     * @Date 2021-09-30
     */
    Map<String,String> getCreateAttendButton();
    /**
     * （店长创建考勤页面）创建考勤界面，返回是否允许创建考勤信息
     * @author wjk
     * @Date 2021-09-30
     */
    List<String> getLastDays(int i);
    /**
     * 根据运营经理的手机号，和提交月份或者考勤月份，获得该月的考勤提交门店统计
     *
     * @author wjk
     * @Date 2021-10-19
     */
    Map<String,String> getStatusCountByYyjl(AttendAuditDdSupervisorParam param);
    /**
     * 根据店长手机号，和考勤时间，删除这家店这个月的员工信息提交信息
     *
     * @author wjk
     * @Date 2021-10-28
     */
    int deleteAttendAuditByAccount(AttendAuditDdSupervisorParam param);

    /**
     * 每月考勤期间，一号，二号，推送本月未考勤完成的数据到微信和小妖app
     *
     * @author wjk
     * @Date 2021-11-11
     */
    Map<String,String> attendAuditTimePushMsgToIMAndWx();

    /**
     *
     *
     * 强制驳回数据到督导驳回状态
     * @author wjk
     * @Date 2021-11-18
     */
    Map<String,String> auditStatusToSubmitAudit(AttendAuditBtyAreaAuditStatusResult attendAuditBtyAreaAuditStatusResult);
}
